home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / PowerMacOberon 1.2 / Source / Tools / Trace.Mod (.txt) < prev    next >
Oberon Text  |  1995-08-22  |  2KB  |  70 lines

  1. Syntax10.Scn.Fnt
  2. FoldElems
  3. Syntax10.Scn.Fnt
  4. (*-------------------------------------------------------------
  5. Trace provides means for switching debugging output on or off. It maintains an
  6. array of boolean switches that can be set or reset by commands.
  7. Trace.Set int
  8.     sets the specified switch to TRUE.
  9. Trace.Reset int
  10.     resets the specified switch to FALSE.
  11. Trace.Show
  12.     lists all switches that are TRUE.
  13. Trace.Clear
  14.     resets all switches to FALSE.
  15. Example
  16. A program may contain debugging output of the form
  17.     IF Trace.switch[3] THEN
  18.         Out.String("x = "); Out.Int(x, 0); Out.Ln
  19. The user can switch the debugging output on by calling the command
  20.     Trace.Set 3
  21. and switch it off by calling the command
  22.     Trace.Reset 3
  23. The debugging output can remain in the program during its whole life (with
  24. negigible time overhead) and can be reactivated whenever new errors occurs.
  25. -------------------------------------------------------------*)
  26. Syntax10i.Scn.Fnt
  27. StampElems
  28. Alloc
  29. 8 May 95
  30. Syntax10b.Scn.Fnt
  31. Documentation
  32. MODULE Trace;  (*HM 94-08-24 / 
  33. IMPORT In, Out;
  34.     switch-: ARRAY 32 OF BOOLEAN;
  35. PROCEDURE Set*;
  36.     VAR i: INTEGER;
  37. BEGIN
  38.     In.Open; In.Int(i);
  39.     WHILE In.Done DO switch[i] := TRUE; In.Int(i) END
  40. END Set;
  41. PROCEDURE Clear*;
  42.     VAR i: INTEGER;
  43. BEGIN
  44.     In.Open; In.Int(i);
  45.     WHILE In.Done DO switch[i] := FALSE; In.Int(i) END
  46. END Clear;
  47. PROCEDURE Reset*;
  48.     VAR i: INTEGER;
  49. BEGIN
  50.     FOR i := 0 TO 31 DO switch[i] := FALSE END
  51. END Reset;
  52. PROCEDURE Show*;
  53.     VAR i: INTEGER;
  54. BEGIN
  55.     Out.String("trace switches:");
  56.     FOR i := 0 TO 31 DO
  57.         IF switch[i] THEN Out.Int(i, 3) END
  58.     END;
  59.     Out.Ln
  60. END Show;
  61. BEGIN
  62.     Reset
  63. END Trace.
  64. Trace.Set 1 2 4 ~
  65. Trace.Clear 2 ~
  66. Trace.Show
  67. Trace.Reset
  68. Usage
  69.     IF Trace.switch[3] THEN print trace output END
  70.